home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 April / CMCD0404.ISO / Software / Shareware / Programare / sharp / wwwSharp_setup.exe / {app} / Examples / Html Editor / toolbar.htc < prev    next >
Text File  |  2002-05-30  |  49KB  |  1,858 lines

  1. <!--
  2. Copyright (c) 2000-2001 Microsoft Corp. All rights reserved.
  3. Version 1.0.1.719
  4. -->
  5.  
  6. <public:component tagname="Toolbar" literalcontent="true">
  7. <public:method name="createLabelAt" internalname="f_PublicCreateLabelAt" />
  8. <public:method name="createButtonAt" internalname="f_PublicCreateButtonAt" />
  9. <public:method name="createCheckButtonAt" internalname="f_PublicCreateCheckButtonAt" />
  10. <public:method name="createSeparatorAt" internalname="f_PublicCreateSeparatorAt" />
  11. <public:method name="createGripperAt" internalname="f_PublicCreateGripperAt" />
  12. <public:method name="createTextBoxAt" internalname="f_PublicCreateTextBoxAt" />
  13. <public:method name="createDropDownListAt" internalname="f_PublicCreateDropDownListAt" />
  14. <public:method name="createCheckGroupAt" internalname="f_PublicCreateCheckGroupAt" />
  15. <public:method name="getItem" internalname="f_PublicGetItem" />
  16. <public:property name="numItems" get="f_PublicGetCount" />
  17. <public:property name="defaultStyle" id="prDefaultStyle" get="get_defaultStyle" put="set_defaultStyle" />
  18. <public:property name="hoverStyle" id="prHoverStyle" get="get_hoverStyle" put="set_hoverStyle" />
  19. <public:property name="selectedStyle" id="prSelectedStyle" get="get_selectedStyle" put="set_selectedStyle" />
  20. <public:property name="movement" id="prMovement" get="get_movement" put="set_movement" />
  21. <public:property name="orientation" id="prOrientation" get="get_orientation" put="set_orientation" />
  22. <public:property name="turnVerticalContent" id="prTurnVerticalContent" get="get_turnVerticalContent" put="set_turnVerticalContent" />
  23. <public:event name="onbuttonclick" id="evButtonClick" />
  24. <public:event name="oncheckchange" id="evCheckChange" />
  25. <public:defaults
  26. tabStop="true"
  27. contentEditable="false"
  28. canHaveHTML="true"
  29. viewInheritStyle="true"
  30. viewMasterTab="false"
  31. viewLinkContent="false"
  32. style="display:none;overflow:visible;cursor:default;padding:1px;background-color:buttonface;border-top:solid 1px buttonhighlight;border-top:solid 1px buttonhighlight;border-left:solid 1px buttonhighlight;border-right:solid 1px buttonshadow;border-bottom:solid 1px buttonshadow"
  33. />
  34. <public:attach event="oncontentready" onevent="f_CreateToolbar()" />
  35. <public:attach event="onpropertychange" onevent="f_OnPropertyChange()" />
  36. <public:attach event="ondocumentready" onevent="f_OnDocReady()" />
  37. <script language="JScript">
  38. var _oTable;
  39. var _oInteractNode;
  40. var _OnStopCount = 0;
  41. var _Ready = false;
  42. var _bDragging = false;
  43. var _bDocked = false;
  44. var _szDockedLocation = "";
  45. var _nLastClientX;
  46. var _nLastClientY;
  47. var _nLastScreenX;
  48. var _nLastScreenY;
  49. var _tbDefaultStyle = "";
  50. var _tbHoverStyle = "";
  51. var _tbSelectedStyle = "";
  52. var _Orientation = "horizontal";
  53. var _TurnVerticalContent = false;
  54. var _Movement = "";
  55. var _KeyboardClick = false;
  56. var _PreDockOrientation = "";
  57. var _IsSubmitting = false;
  58. var _BuiltInDefaultStyle = "color:buttontext;padding:2px;border:solid 1px buttonface";
  59. var _BuiltInHoverStyle = "border-top-color:buttonhighlight;border-left-color:buttonhighlight;border-bottom-color:buttonshadow;border-right-color:buttonshadow";
  60. var _BuiltInSelectedStyle = "border-top-color:buttonshadow;border-left-color:buttonshadow;border-bottom-color:buttonhighlight;border-right-color:buttonhighlight;padding-top:3px;padding-left:3px;padding-bottom:1px;padding-right:1px";
  61. var _szSeparatorHorizStyle = "border-left-width:1px;border-left-style:solid;border-left-color:buttonshadow;border-right-width:1px;border-right-style:solid;border-right-color:buttonhighlight;margin-left:2px;margin-right:2px;width:2px;overflow:hidden;";
  62. var _szSeparatorVertStyle = "border-top-width:1px;border-top-style:solid;border-top-color:buttonshadow;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:buttonhighlight;margin-top:2px;margin-bottom:2px;margin-left:3px;margin-right:3px;height:2px;overflow:hidden;";
  63. var _szGripperHorizStyle = "cursor:move;margin-left:2px;margin-right:2px;border-top:buttonhighlight;border-bottom:buttonshadow;border-right:buttonshadow;border-left:buttonhighlight;border-style:solid;border-width:1px;width:3px;overflow:hidden;";
  64. var _szGripperVertStyle = "cursor:move;margin-top:2px;margin-bottom:2px;margin-left:3px;margin-right:3px;border-top:buttonhighlight;border-bottom:buttonshadow;border-right:buttonshadow;border-left:buttonhighlight;border-style:solid;border-width:1px;height:3px;overflow:hidden;";
  65. function f_GetParent()
  66. {
  67. if (_oTable.children[0] == null)
  68. {
  69. return;
  70. }
  71. if (orientation == "vertical")
  72. {
  73. return _oTable.children[0];
  74. }
  75. else
  76. {
  77. if (_oTable.children[0].children.length > 0)
  78. return _oTable.children[0].children[0];
  79. }
  80. }
  81. function get_orientation()
  82. {
  83. return _Orientation;
  84. }
  85. function set_orientation(value)
  86. {
  87. var szOrig = _Orientation;
  88. if (typeof value == "string")
  89. {
  90. var lVal = value.toLowerCase();
  91. switch (lVal)
  92. {
  93. case "horizontal":
  94. case "vertical":
  95. _Orientation = lVal;
  96. break;
  97. }
  98. }
  99. if (_Ready && (szOrig != _Orientation))
  100. {
  101. if (_Orientation == "horizontal")
  102. f_RearrangeHorizontal();
  103. else
  104. f_RearrangeVertical();
  105. prOrientation.fireChange();
  106. }
  107. }
  108. function f_RearrangeHorizontal()
  109. {
  110. var root = _oTable.children[0];
  111. if (root.children.length == 0)
  112. {
  113. root.appendChild(element.document.createElement("TR"));
  114. return;
  115. }
  116. var topRow = root.children[0];
  117. if (topRow.children.length > 0)
  118. {
  119. var item = topRow.children[0];
  120. f_AdjustContents(item);
  121. f_AdjustSeps(item);
  122. }
  123. while (root.children.length > 1)
  124. {
  125. var item = topRow.appendChild(root.children[1].children[0]);
  126. f_AdjustContents(item);
  127. f_AdjustSeps(item);
  128. root.children[1].removeNode(true);
  129. }
  130. f_ApplyStylesToChildren();
  131. }
  132. function f_RearrangeVertical()
  133. {
  134. var root = _oTable.children[0];
  135. if (root.children.length == 0)
  136. return;
  137. var oldRow = root.children[0];
  138. if (oldRow.children.length == 0)
  139. {
  140. oldRow.removeNode(true);
  141. return;
  142. }
  143. if (oldRow.children.length > 0)
  144. {
  145. var item = oldRow.children[0];
  146. f_AdjustContents(item);
  147. f_AdjustSeps(item);
  148. }
  149. while (oldRow.children.length > 1)
  150. {
  151. var row = element.document.createElement("TR");
  152. if (item._type == "emptygroup")
  153. row.style.display = "none";
  154. root.appendChild(row);
  155. var item = row.appendChild(oldRow.children[1]);
  156. f_AdjustContents(item);
  157. f_AdjustSeps(item);
  158. }
  159. f_ApplyStylesToChildren();
  160. }
  161. function f_AdjustSeps(item)
  162. {
  163. if ((item._type != "separator") && (item._type != "gripper"))
  164. return;
  165. var builtIn;
  166. if ((element.style.writingMode != null) && (element.style.writingMode == "tb-rl"))
  167. {
  168. if (item._type == "separator")
  169. builtIn = (orientation == "vertical") ? _szSeparatorHorizStyle : _szSeparatorVertStyle;
  170. else
  171. builtIn = (orientation == "vertical") ? _szGripperHorizStyle : _szGripperVertStyle;
  172. }
  173. else
  174. {
  175. if (item._type == "separator")
  176. builtIn = (orientation == "vertical") ? _szSeparatorVertStyle : _szSeparatorHorizStyle;
  177. else
  178. builtIn = (orientation == "vertical") ? _szGripperVertStyle : _szGripperHorizStyle;
  179. }
  180. item.children[0].style.cssText = builtIn + ";" + item.children[0]._origStyle;
  181. }
  182. function get_turnVerticalContent()
  183. {
  184. return _TurnVerticalContent;
  185. }
  186. function set_turnVerticalContent(value)
  187. {
  188. var bOrig = _TurnVerticalContent;
  189. if (typeof value == "boolean")
  190. {
  191. _TurnVerticalContent = value;
  192. }
  193. else if (typeof value == "string")
  194. {
  195. var lVal = value.toLowerCase();
  196. _TurnVerticalContent = (lVal != "false") && (lVal != "no") && (lVal != "0");
  197. }
  198. if (_Ready && (bOrig != _TurnVerticalContent))
  199. {
  200. if (_Orientation == "vertical")
  201. f_RearrangeVerticalContent();
  202. prTurnVerticalContent.fireChange();
  203. }
  204. }
  205. function f_RearrangeVerticalContent()
  206. {
  207. var root = _oTable.children[0];
  208. if (root.children.length == 0)
  209. return;
  210. for (var row = 0; row < root.children.length; row++)
  211. {
  212. f_AdjustContents(root.children[row].children[0]);
  213. }
  214. f_ApplyStylesToChildren();
  215. }
  216. function get_defaultStyle()
  217. {
  218. return _tbDefaultStyle;
  219. }
  220. function set_defaultStyle(value)
  221. {
  222. var orig = _tbDefaultStyle;
  223. if (typeof value == "string")
  224. {
  225. _tbDefaultStyle = value;
  226. if (_Ready)
  227. f_ApplyStylesToChildren();
  228. }
  229. if (_Ready && (orig != _tbDefaultStyle))
  230. {
  231. prDefaultStyle.fireChange();
  232. }
  233. }
  234. function get_hoverStyle()
  235. {
  236. return _tbHoverStyle;
  237. }
  238. function set_hoverStyle(value)
  239. {
  240. var orig = _tbHoverStyle;
  241. if (typeof value == "string")
  242. {
  243. _tbHoverStyle = value;
  244. if (_Ready)
  245. f_ApplyStylesToChildren();
  246. }
  247. if (_Ready && (orig != _tbHoverStyle))
  248. {
  249. prHoverStyle.fireChange();
  250. }
  251. }
  252. function get_selectedStyle()
  253. {
  254. return _tbSelectedStyle;
  255. }
  256. function set_selectedStyle(value)
  257. {
  258. var orig = _tbSelectedStyle;
  259. if (typeof value == "string")
  260. {
  261. _tbSelectedStyle = value;
  262. if (_Ready)
  263. f_ApplyStylesToChildren();
  264. }
  265. if (_Ready && (orig != _tbSelectedStyle))
  266. {
  267. prSelectedStyle.fireChange();
  268. }
  269. }
  270. function get_movement()
  271. {
  272. return _Movement;
  273. }
  274. function set_movement(value)
  275. {
  276. var szOrig = _Movement;
  277. if (typeof value == "string")
  278. {
  279. var lVal = value.toLowerCase();
  280. switch (lVal)
  281. {
  282. case "move":
  283. case "move-dock":
  284. case "":
  285. _Movement = lVal;
  286. break;
  287. case "none":
  288. _Movement = "";
  289. break;
  290. }
  291. }
  292. if (_Ready && (szOrig != _Movement))
  293. {
  294. if (f_IsMoveable())
  295. {
  296. defaults.style.position = "absolute";
  297. defaults.style.zIndex = "1";
  298. defaults.style.overflow = "hidden";
  299. }
  300. else
  301. {
  302. defaults.style.position = "static";
  303. defaults.style.zIndex = "";
  304. defaults.style.overflow = "visible";
  305. }
  306. prMovement.fireChange();
  307. }
  308. }
  309. function f_IsMoveable()
  310. {
  311. switch (_Movement)
  312. {
  313. case "move":
  314. case "move-dock":
  315. return true;
  316. }
  317. return false;
  318. }
  319. function f_IsDockable()
  320. {
  321. return (_Movement == "move-dock");
  322. }
  323. function f_PublicCreateLabelAt(index)
  324. {
  325. return f_AddItemAt(index, "<ie:ToolbarLabel />");
  326. }
  327. function f_PublicCreateButtonAt(index)
  328. {
  329. return f_AddItemAt(index, "<ie:ToolbarButton />");
  330. }
  331. function f_PublicCreateCheckButtonAt(index)
  332. {
  333. return f_AddItemAt(index, "<ie:ToolbarCheckButton />");
  334. }
  335. function f_PublicCreateSeparatorAt(index)
  336. {
  337. return f_AddItemAt(index, "<ie:ToolbarSeparator />");
  338. }
  339. function f_PublicCreateGripperAt(index)
  340. {
  341. return f_AddItemAt(index, "<ie:ToolbarGripper />");
  342. }
  343. function f_PublicCreateDropDownListAt(index)
  344. {
  345. return f_AddItemAt(index, "<ie:ToolbarDropDownList />");
  346. }
  347. function f_PublicCreateTextBoxAt(index)
  348. {
  349. return f_AddItemAt(index, "<ie:ToolbarTextBox />");
  350. }
  351. function f_PublicCreateCheckGroupAt(index)
  352. {
  353. return f_AddItemAt(index, "<ie:ToolbarCheckGroup />");
  354. }
  355. function f_AddItemAt(index, html)
  356. {
  357. var numItems = f_NumItems();
  358. var realIndex = f_PublicToRealIndex(index);
  359. if ((realIndex < 0) || (realIndex > numItems))
  360. {
  361. realIndex = numItems;
  362. index = f_PublicGetCount();
  363. }
  364. f_AddItemAtRealIndex(realIndex, html);
  365. return f_PublicGetItem(index);
  366. }
  367. function f_AddItemToGroupAt(index, group, publicGroup)
  368. {
  369. var parent = f_GetParent();
  370. if (parent == null)
  371. return null;
  372. var numInGroup = publicGroup.getCount();
  373. if ((index < 0) || (index > numInGroup))
  374. index = numInGroup;
  375. var realIndex = 0;
  376. var cell;
  377. var foundGroup = false;
  378. for (realIndex = 0; realIndex < parent.children.length; realIndex++)
  379. {
  380. cell = parent.children[realIndex];
  381. if ((orientation == "vertical") && (cell.children.length > 0))
  382. cell = cell.children[0];
  383. if (((cell._type == "checkbutton") || (cell._type == "emptygroup")) &&
  384. (cell._group != null))
  385. {
  386. if (group == cell._group)
  387. {
  388. foundGroup = true;
  389. break;
  390. }
  391. }
  392. }
  393. if (!foundGroup)
  394. return null;
  395. var selectItem = false;
  396. if (cell._type == "emptygroup")
  397. {
  398. if (orientation == "vertical")
  399. cell = cell.parentElement;
  400. cell.removeNode(true);
  401. selectItem = group.bForceSel;
  402. }
  403. var newIndex = realIndex + index;
  404. var newItem = f_AddItemAtRealIndex(newIndex, "<ie:ToolbarCheckButton />");
  405. newItem._group = group;
  406. newItem.id = newItem.uniqueID;
  407. var publicNewItem = publicGroup.getItem(index);;
  408. if (selectItem && (publicNewItem != null))
  409. publicNewItem.setAttribute("selected", "true");
  410. return publicNewItem;
  411. }
  412. function f_AddItemAtRealIndex(index, html)
  413. {
  414. var parent = f_GetParent();
  415. if (parent == null)
  416. return null;
  417. var aNodes = f_CreateNodesFromHtml(html);
  418. if ((aNodes == null) || (aNodes.length < 1))
  419. return null;
  420. var cell = aNodes[0];
  421. var retCell = cell;
  422. if (orientation == "vertical")
  423. {
  424. var trRow = element.document.createElement("TR");
  425. if (cell._type == "emptygroup")
  426. trRow.style.display = "none";
  427. trRow.appendChild(cell);
  428. cell = trRow;
  429. }
  430. if (index == f_NumItems())
  431. {
  432. parent.appendChild(cell);
  433. }
  434. else
  435. {
  436. parent.children[index].insertAdjacentElement("beforeBegin", cell);
  437. }
  438. f_ApplyStylesToChildren();
  439. return retCell;
  440. }
  441. function f_PublicToRealIndex(index)
  442. {
  443. var parent = f_GetParent();
  444. if ((parent == null) || (parent.children.length == 0))
  445. return -1;
  446. var curIndex = -1;
  447. var realIndex;
  448. var cell;
  449. var group = null;
  450. for (realIndex = 0; realIndex < parent.children.length; realIndex++)
  451. {
  452. cell = parent.children[realIndex];
  453. if ((orientation == "vertical") && (cell.children.length > 0))
  454. cell = cell.children[0];
  455. if (((cell._type == "checkbutton") || (cell._type == "emptygroup")) &&
  456. (cell._group != null))
  457. {
  458. if (group != cell._group)
  459. {
  460. curIndex++;
  461. group = cell._group;
  462. }
  463. }
  464. else
  465. {
  466. group = null;
  467. curIndex++;
  468. }
  469. if (curIndex == index)
  470. return realIndex;
  471. }
  472. return -1;
  473. }
  474. function f_PublicGetCount()
  475. {
  476. var parent = f_GetParent();
  477. if ((parent == null) || (parent.children.length == 0))
  478. return 0;
  479. var numItems = 0;
  480. var realIndex;
  481. var cell;
  482. var group = null;
  483. for (realIndex = 0; realIndex < parent.children.length; realIndex++)
  484. {
  485. cell = parent.children[realIndex];
  486. if ((orientation == "vertical") && (cell.children.length > 0))
  487. cell = cell.children[0];
  488. if (((cell._type == "checkbutton") || (cell._type == "emptygroup")) &&
  489. (cell._group != null))
  490. {
  491. if (group != cell._group)
  492. {
  493. numItems++;
  494. group = cell._group;
  495. }
  496. }
  497. else
  498. {
  499. group = null;
  500. numItems++;
  501. }
  502. }
  503. return (numItems < 0) ? 0 : numItems;
  504. }
  505. function f_PublicGetItem(index)
  506. {
  507. if ((index < 0) || (index > f_NumItems()))
  508. return null;
  509. var realIndex = f_PublicToRealIndex(index);
  510. var item = f_GetItem(realIndex);
  511. if (item == null)
  512. return null;
  513. if (((item._type == "checkbutton") || (item._type == "emptygroup")) && (item._group != null))
  514. return f_PublicMakeGroupContract(item);
  515. else
  516. return f_PublicMakeContract(item);
  517. }
  518. function f_PublicMakeContract(item)
  519. {
  520. var obj = new Object();
  521. obj.getType = function() { return item._type; };
  522. if ((item._type == "dropdownlist") || (item._type == "textbox"))
  523. {
  524. obj.click = function() { item.children[0].click(); };
  525. obj.focus = function() { item.children[0].focus(); };
  526. obj.blur = function() { item.children[0].blur(); };
  527. }
  528. else
  529. {
  530. obj.click = function() { item.click(); };
  531. obj.focus = function() { item.focus(); };
  532. obj.blur = function() { item.blur(); };
  533. }
  534. obj.remove = function() { f_PublicRemoveItem(item); };
  535. obj.getAttribute = function(name) { return f_PublicGetAttribute(item, name); };
  536. obj.setAttribute = function(name, value) { f_PublicSetAttribute(item, name, value); };
  537. if (item._type == "dropdownlist")
  538. obj.getOptions = function() { return item.children[0].options; };
  539. return obj;
  540. }
  541. function f_PublicMakeGroupContract(item)
  542. {
  543. var obj = new Object();
  544. obj.getType = function() { return "checkgroup"; };
  545. obj.getItem = function(subIndex) { return f_PublicGetGroupItem(subIndex, item._group); };
  546. obj.getSelected = function() { var selItem = _oTable.document.all[item._group.oSelected]; if (selItem != null) return f_PublicMakeContract(selItem); else return null; };
  547. obj.getAttribute = function(name) { return f_PublicGetGroupAttribute(item._group, name); };
  548. obj.setAttribute = function(name, value) { f_PublicSetGroupAttribute(item._group, name, value); };
  549. obj.remove = function() { f_PublicRemoveGroup(item._group); };
  550. obj.getCount = function() { return f_PublicGetGroupCount(item._group); };
  551. obj.createCheckButtonAt = function(subIndex) { return f_AddItemToGroupAt(subIndex, item._group, obj); };
  552. return obj;
  553. }
  554. function f_PublicGetGroupCount(group)
  555. {
  556. var parent = f_GetParent();
  557. if (parent == null)
  558. return 0;
  559. var realIndex = 0;
  560. var count = 0;
  561. var cell;
  562. var foundGroup = false;
  563. for (realIndex = 0; realIndex < parent.children.length; realIndex++)
  564. {
  565. cell = parent.children[realIndex];
  566. if ((orientation == "vertical") && (cell.children.length > 0))
  567. cell = cell.children[0];
  568. if (((cell._type == "checkbutton") || (cell._type == "emptygroup")) &&
  569. (cell._group != null))
  570. {
  571. if (group == cell._group)
  572. {
  573. if (cell._type == "emptygroup")
  574. return 0;
  575. count++;
  576. foundGroup = true;
  577. }
  578. else if (foundGroup)
  579. {
  580. break;
  581. }
  582. }
  583. else if (foundGroup)
  584. {
  585. break;
  586. }
  587. }
  588. return count;
  589. }
  590. function f_PublicRemoveGroup(group)
  591. {
  592. var numItems = f_PublicGetGroupCount(group);
  593. if (numItems == 0)
  594. {
  595. var cell = f_GetGroupItem(0, group);
  596. if (orientation == "vertical")
  597. cell = cell.parentElement;
  598. cell.removeNode(true);
  599. }
  600. else
  601. {
  602. for (var count = 0; count < numItems; count++)
  603. {
  604. var cell = f_GetGroupItem(0, group);
  605. if (orientation == "vertical")
  606. cell = cell.parentElement;
  607. cell.removeNode(true);
  608. }
  609. }
  610. }
  611. function f_PublicGetGroupItem(index, group)
  612. {
  613. var item = f_GetGroupItem(index, group);
  614. if ((item == null) || (item._type == "emptygroup"))
  615. return null;
  616. return f_PublicMakeContract(item);
  617. }
  618. function f_GetGroupItem(index, group)
  619. {
  620. var parent = f_GetParent();
  621. if (parent == null)
  622. return null;
  623. var realIndex = 0;
  624. var vIndex = -1;
  625. var cell;
  626. var foundGroup = false;
  627. for (realIndex = 0; realIndex < parent.children.length; realIndex++)
  628. {
  629. cell = parent.children[realIndex];
  630. if ((orientation == "vertical") && (cell.children.length > 0))
  631. cell = cell.children[0];
  632. if (((cell._type == "checkbutton") || (cell._type == "emptygroup")) &&
  633. (cell._group != null))
  634. {
  635. if (group == cell._group)
  636. {
  637. foundGroup = true;
  638. vIndex++;
  639. }
  640. else if (foundGroup)
  641. {
  642. return null;
  643. }
  644. if (vIndex == index)
  645. {
  646. return cell;
  647. break;
  648. }
  649. }
  650. else if (foundGroup)
  651. {
  652. return null;
  653. }
  654. }
  655. return null;
  656. }
  657. function f_PublicRemoveItem(item)
  658. {
  659. var empty = null;
  660. var group = item._group;
  661. if ((item._type == "checkbutton") && (group != null) &&
  662. (f_PublicGetGroupCount(group) == 1))
  663. {
  664. empty = f_CreateEmptyGroup(group);
  665. }
  666. if (orientation == "vertical")
  667. {
  668. item = item.parentElement;
  669. if (empty != null)
  670. {
  671. var row = element.document.createElement("TR");
  672. row.style.display = "none";
  673. row.appendChild(empty);
  674. empty = row;
  675. }
  676. }
  677. if ((group != null) && (group.oSelected == item.uniqueID))
  678. group.oSelected = null;
  679. if (empty != null)
  680. item.insertAdjacentElement("beforeBegin", empty);
  681. item.removeNode(true);
  682. if ((group != null) && group.bForceSel && (group.oSelected == null) && (empty == null))
  683. {
  684. item = f_PublicGetGroupItem(0, group);
  685. if (item != null)
  686. item.setAttribute("selected", "true");
  687. }
  688. }
  689. function f_PublicGetGroupAttribute(group, name)
  690. {
  691. switch (name.toLowerCase())
  692. {
  693. case "forceselection":
  694. return (group.bForceSel) ? "true" : "false";
  695. case "defaultstyle":
  696. return group.szDefaultStyle;
  697. case "hoverstyle":
  698. return group.szHoverStyle;
  699. case "selectedstyle":
  700. return group.szSelectedStyle;
  701. }
  702. }
  703. function f_PublicSetGroupAttribute(group, name, value)
  704. {
  705. switch (name.toLowerCase())
  706. {
  707. case "forceselection":
  708. group.bForceSel = (value.toLowerCase() == "true");
  709. if (group.bForceSel && (group.oSelected == null))
  710. {
  711. var cell = f_PublicGetGroupItem(0, group);
  712. if (cell != null)
  713. cell.setAttribute("selected", "true");
  714. }
  715. break;
  716. case "defaultstyle":
  717. group.szDefaultStyle = value;
  718. f_ApplyStylesToChildren();
  719. break;
  720. case "hoverstyle":
  721. group.szHoverStyle = value;
  722. f_ApplyStylesToChildren();
  723. break;
  724. case "selectedstyle":
  725. group.szSelectedStyle = value;
  726. f_ApplyStylesToChildren();
  727. break;
  728. }
  729. }
  730. function f_PublicGetAttribute(item, name)
  731. {
  732. var lname = name.toLowerCase();
  733. if ((item._type == "dropdownlist") || (item._type == "textbox"))
  734. {
  735. if ((lname != "defaultstyle") && (lname != "style") && (item.children.length > 0))
  736. item = item.children[0];
  737. }
  738. if ((lname == "style") && (item.children.length == 1))
  739. return item.children[0].style.cssText;
  740. return item.getAttribute(name);
  741. }
  742. function f_PublicSetAttribute(item, name, value)
  743. {
  744. var cachedImage;
  745. var lname = name.toLowerCase();
  746. if ((item._type == "dropdownlist") || (item._type == "textbox"))
  747. {
  748. if ((lname != "defaultstyle") && (lname != "style") && (item.children.length > 0))
  749. item = item.children[0];
  750. }
  751. if ((lname != "style") && (lname != "selected") && (lname != "outerhtml") &&
  752. (lname != "innertext") && (lname != "innerhtml"))
  753. item.setAttribute(name, value, 0);
  754. if (!_Ready)
  755. return;
  756. switch (lname)
  757. {
  758. case "defaultstyle":
  759. case "hoverstyle":
  760. case "selectedstyle":
  761. f_ApplyStylesToChildren();
  762. break;
  763. case "text":
  764. case "innertext":
  765. if ((item._type == "label") || (item._type == "button") || (item._type == "checkbutton"))
  766. {
  767. f_DoLabelText(item, value);
  768. }
  769. break;
  770. case "innerhtml":
  771. if ((item._type == "label") || (item._type == "button") || (item._type == "checkbutton"))
  772. {
  773. f_DoLabelHTML(item, value);
  774. }
  775. break;
  776. case "imageurl":
  777. if ((item._type == "label") || (item._type == "button") || (item._type == "checkbutton"))
  778. {
  779. cachedImage = new Image();
  780. cachedImage.src = value;
  781. f_DoLabelImageUrl(item, value);
  782. }
  783. break;
  784. case "style":
  785. if (item.children.length == 1)
  786. {
  787. if ((item._type == "separator") || (item._type == "gripper"))
  788. {
  789. item.children[0]._origStyle += ";" + value;
  790. }
  791. item.children[0].style.cssText += ";" + value;
  792. }
  793. break;
  794. case "selected":
  795. if (item._type == "checkbutton")
  796. {
  797. if (f_IsSelected(item) != (value.toLowerCase() == "true"))
  798. {
  799. _KeyboardClick = true;
  800. item.click();
  801. }
  802. }
  803. break;
  804. }
  805. }
  806. function f_DoLabelText(item, text)
  807. {
  808. f_RemoveTextNodes(item);
  809. var span = element.document.createElement("SPAN");
  810. span.innerText = text;
  811. item.children[0].appendChild(span);
  812. f_AdjustContents(item);
  813. }
  814. function f_DoLabelHTML(item, html)
  815. {
  816. f_RemoveTextNodes(item);
  817. var span = element.document.createElement("SPAN");
  818. span.innerHTML = html;
  819. item.children[0].appendChild(span);
  820. f_AdjustContents(item);
  821. }
  822. function f_RemoveTextNodes(item)
  823. {
  824. var content = item.children[0];
  825. if (content.hasChildNodes())
  826. {
  827. var index = (content.getAttribute("_imageAdded")) ? 1 : 0;
  828. while (index < content.childNodes.length)
  829. content.childNodes[index].removeNode(true);
  830. }
  831. }
  832. function f_DoLabelImageUrl(item, imageUrl)
  833. {
  834. var content = item.children[0];
  835. var imageAdded = content.getAttribute("_imageAdded");
  836. if (imageAdded && (imageUrl == null))
  837. {
  838. content.children[0].removeNode(true);
  839. content.removeAttribute("_imageAdded", 0);
  840. if (content.childNodes.length == 0)
  841. content.innerHTML = " ";
  842. }
  843. else if (imageUrl == null)
  844. {
  845. return;
  846. }
  847. else
  848. {
  849. if (imageAdded)
  850. {
  851. content.children[0].removeNode(true);
  852. }
  853. var cacheImage = new Image();
  854. cacheImage.src = imageUrl;
  855. var img = element.document.createElement("IMG");
  856. img.src = cacheImage.src;
  857. if (content.hasChildNodes())
  858. content.insertBefore(img, content.childNodes[0]);
  859. else
  860. content.insertBefore(img);
  861. content.setAttribute("_imageAdded", "true", 0);
  862. }
  863. f_AdjustContents(item);
  864. }
  865. function f_GetItem(nIndex)
  866. {
  867. var oParent = f_GetParent();
  868. if (oParent != null)
  869. {
  870. if ((nIndex < 0) || (nIndex >= oParent.children.length))
  871. return null;
  872. var oCell = oParent.children[nIndex];
  873. if (orientation == "vertical")
  874. {
  875. if (oCell.children.length > 0)
  876. return oCell.children[0];
  877. }
  878. else
  879. {
  880. return oCell;
  881. }
  882. }
  883. return null;
  884. }
  885. function f_NumItems()
  886. {
  887. var oParent = f_GetParent();
  888. if (oParent != null)
  889. {
  890. return oParent.children.length;
  891. }
  892. return 0;
  893. }
  894. function f_OnPropertyChange()
  895. {
  896. switch (event.propertyName)
  897. {
  898. case "innerHTML":
  899. f_CreateToolbar();
  900. break;
  901. case "_submitting":
  902. _IsSubmitting = (element.getAttribute("_submitting") != null);
  903. _OnStopCount = 0;
  904. break;
  905. case "style.direction":
  906. _oTable.style.direction = element.style.direction;
  907. break;
  908. case "dir":
  909. _oTable.dir = element.dir;
  910. break;
  911. }
  912. }
  913. function f_CreateToolbar()
  914. {
  915. element.document.releaseCapture();
  916. f_AddStopEvent();
  917. if (f_IsMoveable())
  918. {
  919. defaults.style.position = "absolute";
  920. defaults.style.zIndex = "1";
  921. defaults.style.overflow = "hidden";
  922. }
  923. var oTable = element.document.createElement("TABLE");
  924. var oTBody = element.document.createElement("TBODY");
  925. _oTable = oTable;
  926. oTable.style.fontSize = currentStyle.fontSize;
  927. oTable.style.fontFamily = currentStyle.fontFamily;
  928. oTable.style.fontWeight = currentStyle.fontWeight;
  929. oTable.style.color = currentStyle.color;
  930. oTable.cellSpacing = 0;
  931. oTable.cellPadding = 0;
  932. if (element.currentStyle.direction != element.style.direction)
  933. oTable.style.direction = element.currentStyle.direction;
  934. else
  935. oTable.style.direction = element.style.direction;
  936. oTable.dir = element.dir;
  937. if (orientation != "vertical")
  938. {
  939. var oRow = element.document.createElement("TR");
  940. oTBody.appendChild(oRow);
  941. }
  942. oTable.appendChild(oTBody);
  943. var aNodes = f_CreateNodesFromHtml(element.innerHTML);
  944. for (var nIndex = 0; nIndex < aNodes.length; nIndex++)
  945. {
  946. f_AppendToolbarItem(aNodes[nIndex]);
  947. }
  948. f_ApplyStylesToChildren();
  949. oTable.attachEvent("onclick", f_OnClick);
  950. oTable.attachEvent("ondblclick", f_OnClick);
  951. oTable.attachEvent("onmousedown", f_OnMouseDown);
  952. oTable.attachEvent("onmouseup", f_OnMouseUp);
  953. oTable.attachEvent("onmouseover", f_OnMouseOver);
  954. oTable.attachEvent("onmouseout", f_OnMouseOut);
  955. oTable.attachEvent("onmousemove", f_Drag);
  956. oTable.attachEvent("oncontextmenu", f_CancelInteractEvents);
  957. oTable.attachEvent("onselectstart", f_CancelInteractEvents);
  958. var oBody = element.document.createElement("BODY");
  959. var oHtml = element.document.createElement("HTML");
  960. oBody.appendChild(oTable);
  961. oHtml.appendChild(oBody);
  962. defaults.viewLink = oHtml.document;
  963. _Ready = true;
  964. defaults.style.display = "block";
  965. }
  966. function f_CreateNodesFromHtml(htmlText)
  967. {
  968. var oSpan = element.document.createElement("span");
  969. oSpan.innerHTML = htmlText;
  970. return f_CreateNodes(oSpan.childNodes);
  971. }
  972. function f_CreateNodes(aNodes)
  973. {
  974. var tbNodes = new Array();
  975. var nNumNodes = (aNodes == null) ? 0 : aNodes.length;
  976. for (var nIndex = 0; nIndex < nNumNodes; nIndex++)
  977. {
  978. var node = aNodes[nIndex];
  979. if (node != null)
  980. tbNodes = tbNodes.concat(f_CreateToolbarItems(node));
  981. }
  982. return tbNodes;
  983. }
  984. function f_CreateToolbarItems(oNode)
  985. {
  986. var aNodes;
  987. var szTagName = (oNode.tagName == null) ? "" : oNode.tagName.toLowerCase();
  988. switch (szTagName)
  989. {
  990. case "toolbarbutton":
  991. aNodes = new Array(f_CreateButton(oNode));
  992. break;
  993. case "toolbarcheckbutton":
  994. aNodes = new Array(f_CreateCheckbutton(oNode));
  995. break;
  996. case "toolbarseparator":
  997. aNodes = new Array(f_CreateSeparator(oNode));
  998. break;
  999. case "toolbarcheckgroup":
  1000. aNodes = f_CreateCheckGroup(oNode);
  1001. break;
  1002. case "toolbardropdownlist":
  1003. aNodes = new Array(f_CreateDropDownList(oNode));
  1004. break;
  1005. case "toolbartextbox":
  1006. aNodes = new Array(f_CreateTextBox(oNode));
  1007. break;
  1008. case "toolbarlabel":
  1009. aNodes = new Array(f_CreateLabel(oNode));
  1010. break;
  1011. case "toolbargripper":
  1012. aNodes = new Array(f_CreateGripper(oNode));
  1013. break;
  1014. default:
  1015. aNodes = new Array();
  1016. break;
  1017. }
  1018. for (var nIndex = 0; nIndex < aNodes.length; nIndex++)
  1019. f_AdjustContents(aNodes[nIndex]);
  1020. return aNodes;
  1021. }
  1022. function f_Interactable(oCell)
  1023. {
  1024. switch (oCell._type)
  1025. {
  1026. case "checkbutton":
  1027. case "button":
  1028. return true;
  1029. default:
  1030. return false;
  1031. }
  1032. }
  1033. function f_IsSelected(oCell)
  1034. {
  1035. if (oCell._type != "checkbutton")
  1036. return false;
  1037. var szSelected = oCell.getAttribute("selected");
  1038. return ((szSelected != null) && (String(szSelected).toLowerCase() == "true"));
  1039. }
  1040. function f_SetSelected(oCell, bSelected)
  1041. {
  1042. if (oCell._type != "checkbutton")
  1043. return;
  1044. oCell.setAttribute("selected", bSelected ? "true" : "false", 0);
  1045. }
  1046. function f_CheckButton(oSelected)
  1047. {
  1048. if ((oSelected == null) || (oSelected._type != "checkbutton"))
  1049. return;
  1050. if (oSelected._group != null)
  1051. {
  1052. var oPrevID = oSelected._group.oSelected;
  1053. if (oPrevID != null)
  1054. {
  1055. var oPrevSel = oSelected.document.all[oPrevID];
  1056. if (oPrevSel != null)
  1057. {
  1058. if (oPrevSel.uniqueID == oSelected.uniqueID)
  1059. return;
  1060. f_SetSelected(oPrevSel, false);
  1061. f_ApplyNeutralStyle(oPrevSel);
  1062. oSelected._group.oSelected = null;
  1063. f_FireCheckChange(oPrevSel);
  1064. }
  1065. }
  1066. }
  1067. f_SetSelected(oSelected, true);
  1068. f_ApplyNeutralStyle(oSelected);
  1069. if (oSelected._group != null)
  1070. oSelected._group.oSelected = oSelected.uniqueID;
  1071. f_FireCheckChange(oSelected);
  1072. }
  1073. function f_AppendToolbarItem(oCell)
  1074. {
  1075. var oParent = f_GetParent();
  1076. if ((oCell == null) || (oParent == null))
  1077. return;
  1078. if (orientation == "vertical")
  1079. {
  1080. var trRow = element.document.createElement("TR");
  1081. if (oCell._type == "emptygroup")
  1082. trRow.style.display = "none";
  1083. trRow.appendChild(oCell);
  1084. oParent.appendChild(trRow);
  1085. }
  1086. else
  1087. {
  1088. oParent.appendChild(oCell);
  1089. }
  1090. }
  1091. function f_AdjustContents(oCell)
  1092. {
  1093. if (oCell._turnContent == null)
  1094. oCell._turnContent = false;
  1095. var bTurnContent = false;
  1096. if (turnVerticalContent)
  1097. {
  1098. switch (oCell._type)
  1099. {
  1100. case "label":
  1101. case "button":
  1102. case "checkbutton":
  1103. bTurnContent = (orientation == "vertical");
  1104. break;
  1105. default:
  1106. return;
  1107. }
  1108. if (bTurnContent)
  1109. {
  1110. oCell._turnContent = true;
  1111. oCell.style.writingMode = "tb-rl";
  1112. }
  1113. }
  1114. if (oCell._turnContent && !bTurnContent)
  1115. {
  1116. oCell._turnContent = false;
  1117. oCell.style.writingMode = "lr-tb";
  1118. }
  1119. if (oCell._type == "emptygroup")
  1120. return;
  1121. var oContent = oCell.children[0];
  1122. var len = oContent.children.length;
  1123. for (nIndex = 0; nIndex < len; nIndex++)
  1124. {
  1125. var oObj = oContent.children[nIndex];
  1126. if (oObj.tagName == "IMG")
  1127. {
  1128. oObj.align = (bTurnContent) ? "middle" : "absmiddle";
  1129. }
  1130. }
  1131. }
  1132. function f_CreateGripper(oNode)
  1133. {
  1134. var oCell = element.document.createElement("td");
  1135. var oDiv = element.document.createElement("div");
  1136. oCell.appendChild(oDiv);
  1137. var szStyle = "";
  1138. if ((element.style.writingMode != null) && (element.style.writingMode == "tb-rl"))
  1139. szStyle = (orientation == "vertical") ? _szGripperHorizStyle : _szGripperVertStyle;
  1140. else
  1141. szStyle = (orientation == "vertical") ? _szGripperVertStyle : _szGripperHorizStyle;
  1142. oDiv._origStyle = oNode.style.cssText;
  1143. oDiv.style.cssText = szStyle + ";" + oDiv._origStyle;
  1144. oCell.mergeAttributes(oNode);
  1145. oCell.id = oNode.getAttribute("id");
  1146. oCell._type = "gripper";
  1147. return oCell;
  1148. }
  1149. function f_CreateSeparator(oNode)
  1150. {
  1151. var oCell = element.document.createElement("TD");
  1152. var oDiv = element.document.createElement("DIV");
  1153. oCell.appendChild(oDiv);
  1154. var szStyle;
  1155. if ((element.style.writingMode != null) && (element.style.writingMode == "tb-rl"))
  1156. szStyle = (orientation == "vertical") ? _szSeparatorHorizStyle : _szSeparatorVertStyle;
  1157. else
  1158. szStyle = (orientation == "vertical") ? _szSeparatorVertStyle : _szSeparatorHorizStyle;
  1159. oDiv._origStyle = oNode.style.cssText;
  1160. oDiv.style.cssText = szStyle + ";" + oDiv._origStyle;
  1161. oCell.mergeAttributes(oNode);
  1162. oCell.id = oNode.getAttribute("id");
  1163. oCell._type = "separator";
  1164. return oCell;
  1165. }
  1166. function f_CreateButton(oNode)
  1167. {
  1168. var oCell = f_CreateLabel(oNode);
  1169. if (oCell.tabIndex == 0)
  1170. oCell.tabIndex = 1;
  1171. oCell._type = "button";
  1172. oCell.attachEvent("onkeyup", f_OnKeyUp);
  1173. return oCell;
  1174. }
  1175. function f_CreateCheckbutton(oNode)
  1176. {
  1177. var oCell = f_CreateButton(oNode);
  1178. oCell._type = "checkbutton";
  1179. if (oCell.getAttribute("selected") == null)
  1180. oCell.setAttribute("selected", "false", 0);
  1181. return oCell;
  1182. }
  1183. function f_CreateCheckGroup(oNode)
  1184. {
  1185. var aTempNodes = f_CreateNodesFromHtml(oNode.innerHTML);
  1186. var aNodes = new Array();
  1187. var oGroup = new Object();
  1188. var forceSel = oNode.getAttribute("forceselection");
  1189. oGroup.bForceSel = (forceSel != null) && (String(forceSel).toLowerCase() == "true");
  1190. oGroup.oSelected = null;
  1191. oGroup.szDefaultStyle = oNode.getAttribute("defaultstyle");
  1192. oGroup.szHoverStyle = oNode.getAttribute("hoverstyle");
  1193. oGroup.szSelectedStyle = oNode.getAttribute("selectedstyle");
  1194. var nFirstCheckBtn = -1;
  1195. var bDisabled = oNode.disabled;
  1196. for (var nIndex = 0; nIndex < aTempNodes.length; nIndex++)
  1197. {
  1198. var oCell = aTempNodes[nIndex];
  1199. if (oCell._type == "checkbutton")
  1200. {
  1201. if (nFirstCheckBtn == -1)
  1202. nFirstCheckBtn = nIndex;
  1203. aNodes = aNodes.concat(new Array(oCell));
  1204. if ((oCell.id == null) || (oCell.id == ""))
  1205. {
  1206. oCell.id = oCell.uniqueID;
  1207. }
  1208. oCell._group = oGroup;
  1209. if (f_IsSelected(oCell))
  1210. {
  1211. if (oGroup.oSelected == null)
  1212. {
  1213. oGroup.oSelected = oCell.uniqueID;
  1214. }
  1215. else
  1216. {
  1217. f_SetSelected(oCell, false);
  1218. }
  1219. }
  1220. }
  1221. oCell.disabled = (bDisabled || oCell.isDisabled);
  1222. }
  1223. if (oGroup.bForceSel && (oGroup.oSelected == null) && (nFirstCheckBtn != -1))
  1224. {
  1225. var oCell = aNodes[nFirstCheckBtn];
  1226. oGroup.oSelected = oCell.uniqueID;
  1227. f_SetSelected(oCell, true);
  1228. }
  1229. if (aNodes.length == 0)
  1230. aNodes = new Array(f_CreateEmptyGroup(oGroup));
  1231. return aNodes;
  1232. }
  1233. function f_CreateEmptyGroup(group)
  1234. {
  1235. var empty = element.document.createElement("TD");
  1236. empty._type = "emptygroup";
  1237. empty._group = group;
  1238. empty.style.display = "none";
  1239. return empty;
  1240. }
  1241. function f_CreateLabel(oNode)
  1242. {
  1243. var oCell = element.document.createElement("TD");
  1244. var oContent = element.document.createElement("SPAN");
  1245. oCell.appendChild(oContent);
  1246. var szText = oNode.getAttribute("text");
  1247. var szImageUrl = oNode.getAttribute("imageUrl");
  1248. if (szText == null)
  1249. {
  1250. while (oNode.childNodes.length > 0)
  1251. oContent.appendChild(oNode.childNodes[0].removeNode(true));
  1252. }
  1253. else
  1254. {
  1255. var oText = element.document.createElement("SPAN");
  1256. oText.innerText = szText;
  1257. oContent.appendChild(oText);
  1258. }
  1259. if (szImageUrl != null)
  1260. {
  1261. var cacheImage = new Image();
  1262. cacheImage.src = szImageUrl;
  1263. var oImg = element.document.createElement("IMG");
  1264. oImg.src = cacheImage.src;
  1265. if (oContent.hasChildNodes())
  1266. oContent.insertBefore(oImg, oContent.childNodes[0]);
  1267. else
  1268. oContent.insertBefore(oImg);
  1269. oContent.setAttribute("_imageAdded", "true", 0);
  1270. }
  1271. if (oContent.childNodes.length == 0)
  1272. oContent.innerHTML = " ";
  1273. oCell.mergeAttributes(oNode);
  1274. oCell.id = oNode.getAttribute("id");
  1275. oCell.noWrap = "true";
  1276. oCell._type = "label";
  1277. oContent.style.cssText = oNode.style.cssText;
  1278. return oCell;
  1279. }
  1280. function f_CreateTextBox(oNode)
  1281. {
  1282. var oCell = element.document.createElement("td");
  1283. var szType = oNode.getAttribute("type");
  1284. var szValue = oNode.getAttribute("value");
  1285. var szSize = oNode.getAttribute("size");
  1286. var szMaxLength = oNode.getAttribute("maxlength");
  1287. var szReadOnly = oNode.getAttribute("readonly");
  1288. if ((szType == null) || (szType.toLowerCase() != "password"))
  1289. szType = "text";
  1290. var szTabIndex = "1";
  1291. if (oNode.tabIndex != 0)
  1292. szTabIndex = oNode.getAttribute("tabindex");
  1293. oCell.innerHTML = "<input type=\"" + szType + "\">";
  1294. var textbox = oCell.children[0];
  1295. textbox.mergeAttributes(oNode);
  1296. if ((szSize != null) && (szSize != ""))
  1297. textbox.size = szSize;
  1298. if ((szMaxLength != null) && (szMaxLength != ""))
  1299. textbox.maxLength = szMaxLength;
  1300. if ((szTabIndex != null) && (szTabIndex != ""))
  1301. textbox.tabIndex = szTabIndex;
  1302. if ((szValue != null) && (szValue != ""))
  1303. textbox.value = szValue;
  1304. if ((szReadOnly != null) && (szReadOnly != ""))
  1305. textbox.readOnly = szReadOnly;
  1306. var changeScript = oNode.getAttribute("onchange");
  1307. if (changeScript != null)
  1308. textbox.onchange = function() { eval(changeScript) };
  1309. oCell.id = oNode.getAttribute("id");
  1310. oCell._type = "textbox";
  1311. oCell.noWrap = "true";
  1312. var szDefaultStyle = oNode.getAttribute("defaultStyle");
  1313. var fontStr = f_CreateFontString(oNode);
  1314. szDefaultStyle = (szDefaultStyle == null) ? fontStr : fontStr + szDefaultStyle;
  1315. if (szDefaultStyle != null)
  1316. {
  1317. oCell.setAttribute("defaultStyle", szDefaultStyle, 0);
  1318. oCell.children[0].removeAttribute("defaultStyle", 0);
  1319. }
  1320. return oCell;
  1321. }
  1322. function f_CreateFontString(oNode)
  1323. {
  1324. var fontStr = "";
  1325. if (oNode.style.fontFamily)
  1326. fontStr += "font-family:" + oNode.style.fontFamily + ";";
  1327. if (oNode.style.fontSize)
  1328. fontStr += "font-size:" + oNode.style.fontSize + ";";
  1329. if (oNode.style.fontStyle)
  1330. fontStr += "font-style:" + oNode.style.fontStyle + ";";
  1331. if (oNode.style.fontVariant)
  1332. fontStr += "font-variant:" + oNode.style.fontVariant + ";";
  1333. if (oNode.style.fontWeight)
  1334. fontStr += "font-weight:" + oNode.style.fontWeight + ";";
  1335. return fontStr;
  1336. }
  1337. function f_InheritCellFont(oCell)
  1338. {
  1339. oCell.children[0].style.fontFamily = oCell.style.fontFamily;
  1340. oCell.children[0].style.fontSize = oCell.style.fontSize;
  1341. oCell.children[0].style.fontStyle = oCell.style.fontStyle;
  1342. oCell.children[0].style.fontVariant = oCell.style.fontVariant;
  1343. oCell.children[0].style.fontWeight = oCell.style.fontWeight;
  1344. }
  1345. function f_CreateDropDownList(oNode)
  1346. {
  1347. var oCell = element.document.createElement("td");
  1348. var szTabIndex = "1";
  1349. if (oNode.tabIndex != 0)
  1350. szTabIndex = oNode.getAttribute("tabindex");
  1351. var szHtml = "<select"
  1352. if ((szTabIndex != null) && (szTabIndex != ""))
  1353. szHtml += " tabindex=\"" + szTabIndex + "\"";
  1354. szHtml += ">";
  1355. szHtml += oNode.innerHTML;
  1356. szHtml += "</select>";
  1357. oCell.innerHTML = szHtml;
  1358. oCell.children[0].mergeAttributes(oNode);
  1359. oCell.children[0].disabled = oNode.isDisabled || element.isDisabled;
  1360. oCell.id = oNode.getAttribute("id");
  1361. oCell._type = "dropdownlist";
  1362. oCell.noWrap = "true";
  1363. var changeScript = oNode.getAttribute("onchange");
  1364. if (changeScript != null)
  1365. oCell.children[0].onchange = function() { eval(changeScript) };
  1366. var szDefaultStyle = oNode.getAttribute("defaultStyle");
  1367. var fontStr = f_CreateFontString(oNode);
  1368. szDefaultStyle = (szDefaultStyle == null) ? fontStr : fontStr + szDefaultStyle;
  1369. if (szDefaultStyle != null)
  1370. {
  1371. oCell.setAttribute("defaultStyle", szDefaultStyle, 0);
  1372. oCell.children[0].removeAttribute("defaultStyle", 0);
  1373. }
  1374. return oCell;
  1375. }
  1376. function f_ApplyStylesToChildren()
  1377. {
  1378. var globalDefault = _BuiltInDefaultStyle + ";" + _tbDefaultStyle + ";";
  1379. var globalHover = _BuiltInHoverStyle + ";" + _tbHoverStyle + ";";
  1380. var globalSelected = _BuiltInSelectedStyle + ";" + _tbSelectedStyle + ";";
  1381. var numItems = f_NumItems();
  1382. var index;
  1383. for (index = 0; index < numItems; index++)
  1384. {
  1385. var item = f_GetItem(index);
  1386. var isButton = (item._type == "button");
  1387. var isCheckButton = (item._type == "checkbutton");
  1388. var hasGroup = (isCheckButton && (item._group != null));
  1389. var localDefault = item.getAttribute("defaultStyle");
  1390. var groupStyle = ";";
  1391. if (item._turnContent)
  1392. localDefault += ";writing-mode:tb-rl;";
  1393. if (isButton || isCheckButton)
  1394. {
  1395. item._defaultStyle = globalDefault;
  1396. if (hasGroup && (item._group.szDefaultStyle != null))
  1397. item._defaultStyle += item._group.szDefaultStyle + ";";
  1398. item._defaultStyle += localDefault + ";";
  1399. item._hoverStyle = item._defaultStyle + globalHover;
  1400. if (hasGroup && (item._group.szHoverStyle != null))
  1401. item._hoverStyle += item._group.szHoverStyle + ";";
  1402. item._hoverStyle += item.getAttribute("hoverStyle") + ";";
  1403. item._selectedStyle = item._defaultStyle + globalSelected;
  1404. if (hasGroup && (item._group.szSelectedStyle != null))
  1405. item._selectedStyle += item._group.szSelectedStyle + ";";
  1406. item._selectedStyle += item.getAttribute("selectedStyle") + ";";
  1407. f_ApplyNeutralStyle(item);
  1408. }
  1409. else if (item._type != "emptygroup")
  1410. {
  1411. item.style.cssText = globalDefault + localDefault;
  1412. if ((item._type == "dropdownlist") || (item._type == "textbox"))
  1413. f_InheritCellFont(item);
  1414. }
  1415. }
  1416. }
  1417. function f_ApplyNeutralStyle(oCell)
  1418. {
  1419. switch (oCell._type)
  1420. {
  1421. case "checkbutton":
  1422. oCell.style.cssText = (f_IsSelected(oCell)) ? oCell._selectedStyle : oCell._defaultStyle;
  1423. break;
  1424. case "button":
  1425. oCell.style.cssText = oCell._defaultStyle;
  1426. break;
  1427. }
  1428. }
  1429. function f_ApplyPressedStyle(oCell)
  1430. {
  1431. switch (oCell._type)
  1432. {
  1433. case "checkbutton":
  1434. oCell.style.cssText = oCell._selectedStyle;
  1435. break;
  1436. case "button":
  1437. oCell.style.cssText = oCell._selectedStyle;
  1438. break;
  1439. }
  1440. }
  1441. function f_ApplyHoverStyle(oCell)
  1442. {
  1443. switch (oCell._type)
  1444. {
  1445. case "checkbutton":
  1446. oCell.style.cssText = (f_IsSelected(oCell)) ? oCell._selectedStyle : oCell._hoverStyle;
  1447. break;
  1448. case "button":
  1449. oCell.style.cssText = oCell._hoverStyle;
  1450. break;
  1451. }
  1452. }
  1453. function f_OnMouseOver()
  1454. {
  1455. if (_IsSubmitting || !_Ready)
  1456. return;
  1457. if (_bDragging)
  1458. return;
  1459. var oCell = f_FindSurroundingCell(event.srcElement);
  1460. if ((oCell != null) && !oCell.contains(event.fromElement))
  1461. {
  1462. if (!f_Interactable(oCell) || oCell.isDisabled)
  1463. return;
  1464. if (_oInteractNode != null)
  1465. {
  1466. if (_oInteractNode == oCell)
  1467. f_ApplyPressedStyle(oCell);
  1468. }
  1469. else
  1470. {
  1471. f_ApplyHoverStyle(oCell);
  1472. }
  1473. }
  1474. }
  1475. function f_OnMouseOut()
  1476. {
  1477. if (_IsSubmitting || !_Ready)
  1478. return;
  1479. if (_bDragging)
  1480. return;
  1481. var oCell = f_FindSurroundingCell(event.srcElement);
  1482. if ((oCell != null) && !oCell.contains(event.toElement))
  1483. {
  1484. if (!f_Interactable(oCell) || oCell.isDisabled)
  1485. return;
  1486. if (_oInteractNode != null)
  1487. {
  1488. if (_oInteractNode == oCell)
  1489. f_ApplyHoverStyle(oCell);
  1490. }
  1491. else
  1492. {
  1493. f_ApplyNeutralStyle(oCell);
  1494. }
  1495. }
  1496. }
  1497. function f_OnMouseDown()
  1498. {
  1499. if (_IsSubmitting || !_Ready)
  1500. return;
  1501. if (event.button != 1)
  1502. return;
  1503. var oCell = f_FindSurroundingCell(event.srcElement);
  1504. if ((oCell != null) && (f_Interactable(oCell)))
  1505. {
  1506. f_SetCapture();
  1507. if (oCell.isDisabled)
  1508. return;
  1509. f_ApplyPressedStyle(oCell);
  1510. _oInteractNode = oCell;
  1511. }
  1512. else if (f_IsMoveable())
  1513. {
  1514. if ((oCell == null) ||
  1515. (oCell._type == "gripper"))
  1516. {
  1517. f_SetCapture();
  1518. f_StartDrag();
  1519. }
  1520. }
  1521. }
  1522. function f_OnMouseUp()
  1523. {
  1524. if (_IsSubmitting || !_Ready)
  1525. return;
  1526. if (event.button != 1)
  1527. return;
  1528. f_ReleaseCapture();
  1529. if (_oInteractNode != null)
  1530. {
  1531. f_ApplyNeutralStyle(_oInteractNode);
  1532. _oInteractNode = null;
  1533. }
  1534. f_StopDrag();
  1535. f_OnMouseOver();
  1536. }
  1537. function f_OnKeyUp()
  1538. {
  1539. if (_IsSubmitting || !_Ready)
  1540. return;
  1541. if ((event.srcElement.accessKey != null) && event.altKey &&
  1542. (event.srcElement.accessKey.toUpperCase().charCodeAt() == event.keyCode))
  1543. {
  1544. event.srcElement.click();
  1545. }
  1546. else
  1547. {
  1548. switch (event.keyCode)
  1549. {
  1550. case 13:
  1551. case 32:
  1552. var oCell = f_FindSurroundingCell(event.srcElement);
  1553. if (oCell != null)
  1554. {
  1555. _KeyboardClick = true;
  1556. oCell.click();
  1557. }
  1558. break;
  1559. }
  1560. }
  1561. }
  1562. function f_StartDrag()
  1563. {
  1564. _nLastScreenX = event.screenX;
  1565. _nLastScreenY = event.screenY;
  1566. _nLastClientX = event.clientX;
  1567. _nLastClientY = event.clientY;
  1568. _bDragging = true;
  1569. }
  1570. function f_StopDrag()
  1571. {
  1572. _bDragging = false;
  1573. }
  1574. function f_Least (a, b, c, d)
  1575. {
  1576. return ((a < b) && (a < c) && (a < d));
  1577. }
  1578. function f_Drag()
  1579. {
  1580. if (!_bDragging || (event.button != 1))
  1581. {
  1582. return;
  1583. }
  1584. var nNewLeft = offsetLeft + event.screenX - _nLastScreenX;
  1585. var nNewTop = offsetTop + event.screenY - _nLastScreenY;
  1586. _nLastScreenX = event.screenX;
  1587. _nLastScreenY = event.screenY;
  1588. var oBody = f_FindSurroundingBody();
  1589. if (oBody == null)
  1590. return;
  1591. var nDeltaLeft = (offsetLeft + event.clientX) - oBody.scrollLeft;
  1592. var nDeltaTop = (offsetTop + event.clientY) - oBody.scrollTop;
  1593. var nDeltaRight = (oBody.scrollLeft + oBody.clientWidth) - (offsetLeft + event.clientX);
  1594. var nDeltaBottom = (oBody.scrollTop + oBody.clientHeight) - (offsetTop + event.clientY);
  1595. var nMaxDelta = 10;
  1596. if (f_IsDockable() &&
  1597. ((nDeltaLeft <= nMaxDelta) || (nDeltaTop <= nMaxDelta) || (nDeltaBottom <= nMaxDelta) || (nDeltaRight <= nMaxDelta)))
  1598. {
  1599. if ((!_bDocked && (nDeltaTop <= nMaxDelta)) ||
  1600. (_bDocked && (_szDockedLocation != "top") && f_Least(nDeltaTop, nDeltaBottom, nDeltaLeft, nDeltaRight)))
  1601. {
  1602. if (!_bDocked)
  1603. _PreDockOrientation = orientation;
  1604. f_ReleaseCapture();
  1605. _oTable.releaseCapture();
  1606. orientation = "horizontal";
  1607. f_SetCapture();
  1608. style.removeExpression("height");
  1609. style.height = "";
  1610. style.setExpression("left", "scrollLeft-scrollLeft+document.body.scrollLeft", "JavaScript");
  1611. style.setExpression("top", "scrollTop-scrollTop+document.body.scrollTop", "JavaScript");
  1612. style.setExpression("width", "document.body.clientWidth");
  1613. _bDocked = true;
  1614. _szDockedLocation = "top";
  1615. }
  1616. else if ((!_bDocked && (nDeltaLeft <= nMaxDelta)) ||
  1617. (_bDocked && (_szDockedLocation != "left") && f_Least(nDeltaLeft, nDeltaTop, nDeltaBottom, nDeltaRight)))
  1618. {
  1619. if (!_bDocked)
  1620. _PreDockOrientation = orientation;
  1621. f_ReleaseCapture();
  1622. orientation = "vertical";
  1623. f_SetCapture();
  1624. style.removeExpression("width");
  1625. style.width = "";
  1626. style.height = oBody.clientHeight;
  1627. style.setExpression("left", "scrollLeft-scrollLeft+document.body.scrollLeft", "JavaScript");
  1628. style.setExpression("top", "scrollTop-scrollTop+document.body.scrollTop", "JavaScript");
  1629. style.setExpression("height", "document.body.clientHeight");
  1630. _bDocked = true;
  1631. _szDockedLocation = "left";
  1632. }
  1633. else if ((!_bDocked && (nDeltaBottom <= nMaxDelta)) ||
  1634. (_bDocked && (_szDockedLocation != "bottom") && f_Least(nDeltaBottom, nDeltaTop, nDeltaLeft, nDeltaRight)))
  1635. {
  1636. if (!_bDocked)
  1637. _PreDockOrientation = orientation;
  1638. f_ReleaseCapture();
  1639. orientation = "horizontal";
  1640. f_SetCapture();
  1641. style.removeExpression("height");
  1642. style.height = "";
  1643. style.setExpression("left", "scrollLeft-scrollLeft+document.body.scrollLeft", "JavaScript");
  1644. style.setExpression("top", "scrollTop-scrollTop+document.body.scrollTop+document.body.clientHeight-offsetHeight", "JavaScript");
  1645. style.setExpression("width", "document.body.clientWidth");
  1646. _bDocked = true;
  1647. _szDockedLocation = "bottom";
  1648. }
  1649. else if ((!_bDocked && (nDeltaRight <= nMaxDelta)) ||
  1650. (_bDocked && (_szDockedLocation != "right") && f_Least(nDeltaRight, nDeltaTop, nDeltaBottom, nDeltaLeft)))
  1651. {
  1652. if (!_bDocked)
  1653. _PreDockOrientation = orientation;
  1654. f_ReleaseCapture();
  1655. orientation = "vertical";
  1656. f_SetCapture();
  1657. style.removeExpression("width");
  1658. style.width = "";
  1659. style.height = oBody.clientHeight;
  1660. style.setExpression("left", "scrollLeft-scrollLeft+document.body.scrollLeft+document.body.clientWidth-offsetWidth", "JavaScript");
  1661. style.setExpression("top", "scrollTop-scrollTop+document.body.scrollTop", "JavaScript");
  1662. style.setExpression("height", "document.body.clientHeight");
  1663. _bDocked = true;
  1664. _szDockedLocation = "right";
  1665. }
  1666. }
  1667. else if (_bDocked)
  1668. {
  1669. f_ReleaseCapture();
  1670. orientation = _PreDockOrientation;
  1671. _PreDockOrientation = "";
  1672. f_SetCapture();
  1673. style.removeExpression("left");
  1674. style.removeExpression("top");
  1675. style.removeExpression("width");
  1676. style.removeExpression("height");
  1677. style.width = "";
  1678. style.height = "";
  1679. style.left = offsetLeft + (event.clientX - _nLastClientX);
  1680. style.top = offsetTop + (event.clientY - _nLastClientY);
  1681. _bDocked = false;
  1682. }
  1683. else if (!_bDocked)
  1684. {
  1685. style.left = nNewLeft;
  1686. style.top = nNewTop;
  1687. }
  1688. }
  1689. function f_SelectItem(oCell)
  1690. {
  1691. if (!f_Interactable(oCell))
  1692. return;
  1693. if (oCell._type == "checkbutton")
  1694. {
  1695. if (!f_IsSelected(oCell))
  1696. {
  1697. f_CheckButton(oCell);
  1698. }
  1699. else if ((oCell._group == null) || (!oCell._group.bForceSel))
  1700. {
  1701. f_SetSelected(oCell, false);
  1702. if (oCell._group != null)
  1703. {
  1704. oCell._group.oSelected = null;
  1705. }
  1706. f_FireCheckChange(oCell);
  1707. }
  1708. if (_KeyboardClick)
  1709. f_ApplyNeutralStyle(oCell);
  1710. else
  1711. f_ApplyHoverStyle(oCell);
  1712. }
  1713. f_FireButtonClick(oCell);
  1714. }
  1715. function f_OnClick()
  1716. {
  1717. if (_IsSubmitting || !_Ready)
  1718. return;
  1719. var oCell = f_FindSurroundingCell(event.srcElement);
  1720. if ((oCell != null) && (!oCell.isDisabled))
  1721. f_SelectItem(oCell);
  1722. _KeyboardClick = false;
  1723. }
  1724. function f_FindSurroundingCell(oNode)
  1725. {
  1726. while (oNode != null)
  1727. {
  1728. if (oNode._type != null)
  1729. return oNode;
  1730. oNode = oNode.offsetParent;
  1731. }
  1732. return null;
  1733. }
  1734. function f_FindSurroundingBody()
  1735. {
  1736. var oParent = element.offsetParent;
  1737. while (oParent.tagName != "BODY")
  1738. {
  1739. oParent = oParent.offsetParent;
  1740. if (oParent == null)
  1741. return;
  1742. }
  1743. return oParent;
  1744. }
  1745. function f_CancelInteractEvents()
  1746. {
  1747. var oCell = f_FindSurroundingCell(event.srcElement);
  1748. if (oCell == null)
  1749. {
  1750. event.returnValue = false;
  1751. }
  1752. else
  1753. {
  1754. switch (oCell._type)
  1755. {
  1756. case "button":
  1757. case "checkbutton":
  1758. case "separator":
  1759. case "gripper":
  1760. case "label":
  1761. event.returnValue = false;
  1762. break;
  1763. }
  1764. }
  1765. }
  1766. function f_FireCheckChange(oCell)
  1767. {
  1768. evCheckChange.fire(f_CreateEventObject(oCell));
  1769. }
  1770. function f_FireButtonClick(oCell)
  1771. {
  1772. evButtonClick.fire(f_CreateEventObject(oCell));
  1773. }
  1774. function f_CreateEventObject(oCell)
  1775. {
  1776. var oEvent= createEventObject();
  1777. if (oCell != null)
  1778. {
  1779. oEvent.srcNode = f_PublicMakeContract(oCell);
  1780. var nIndex = f_GetIndexFromCell(oCell);
  1781. if (nIndex >= 0)
  1782. oEvent.flatIndex = nIndex;
  1783. }
  1784. return oEvent;
  1785. }
  1786. function f_GetIndexFromCell(oCell)
  1787. {
  1788. var oParent = f_GetParent();
  1789. var nIndex;
  1790. if (orientation == "vertical")
  1791. {
  1792. oCell = oCell.parentElement;
  1793. }
  1794. for (nIndex = 0; nIndex < oParent.children.length; nIndex++)
  1795. {
  1796. if (oCell.uniqueID == oParent.children[nIndex].uniqueID)
  1797. {
  1798. return nIndex;
  1799. }
  1800. }
  1801. return -1;
  1802. }
  1803. function f_SetCapture()
  1804. {
  1805. f_ReleaseCapture();
  1806. _oTable.setCapture();
  1807. }
  1808. function f_ReleaseCapture()
  1809. {
  1810. _oTable.releaseCapture();
  1811. }
  1812. function f_OnStop()
  1813. {
  1814. if (!_IsSubmitting || (_OnStopCount > 0))
  1815. {
  1816. _IsSubmitting = false;
  1817. element.removeAttribute("_submitting");
  1818. }
  1819. _OnStopCount++;
  1820. }
  1821. function f_CleanupEvents()
  1822. {
  1823. var eventArray = window.__toolbarAttachedEvents;
  1824. if ((eventArray != null) && (eventArray[0]))
  1825. {
  1826. var newArray = new Array(false);
  1827. for (var i = 1; i < eventArray.length; i++)
  1828. {
  1829. if (element.document.all[eventArray[i][0]] == null)
  1830. {
  1831. element.document.detachEvent("onstop", eventArray[i][1]);
  1832. }
  1833. else
  1834. {
  1835. newArray = newArray.concat(new Array(eventArray[i]));
  1836. }
  1837. }
  1838. window.__toolbarAttachedEvents = newArray;
  1839. }
  1840. }
  1841. function f_AddStopEvent()
  1842. {
  1843. var eventArray = window.__toolbarAttachedEvents;
  1844. if (eventArray == null)
  1845. {
  1846. eventArray = new Array(false);
  1847. }
  1848. element.document.attachEvent("onstop", f_OnStop);
  1849. eventArray[0] = true;
  1850. entry = new Array(element.uniqueID, f_OnStop);
  1851. window.__toolbarAttachedEvents = eventArray.concat(new Array(entry));
  1852. }
  1853. function f_OnDocReady()
  1854. {
  1855. f_CleanupEvents();
  1856. }
  1857. </script>
  1858. </public:component>